package ar.com.niktutos.web;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import ar.com.niktutos.dto.CapituloDTO;
import ar.com.niktutos.dto.TagDTO;
import ar.com.niktutos.services.TagService;
import ar.com.niktutos.services.TutoPlayerService;
import ar.com.niktutos.springapplicationcontext.SpringApplicationContext;

public class TutoPlayer{

	
	public TutoPlayer(){
		
	}
	
	public CapituloDTO getCapituloByID(String id){
		return this.getCapituloByID(Integer.parseInt(id));
	}
	
	public CapituloDTO getCapituloByID(Integer id){
		return ((TutoPlayerService)SpringApplicationContext.getBean("tutoPlayerService")).getCapituloByID(id);
	}
	
	public CapituloDTO getCapituloByNumber(String capNumber){
		return this.getCapituloByNumber(Integer.parseInt(capNumber));
	}
	
	public CapituloDTO getCapituloByNumber(Integer capNumber){
		return ((TutoPlayerService)SpringApplicationContext.getBean("tutoPlayerService")).getCapituloByNumber(capNumber);
	}
	
	
	public CapituloDTO getLastCapitulo(){
		return ((TutoPlayerService)SpringApplicationContext.getBean("tutoPlayerService")).getLastCapitulo();
	}
	
	public String ajaxCallSetCapituloActualByID(String id){
    	String retorna = "";
		
		CapituloDTO capitulo = this.getCapituloByID(id);
		
		retorna = this.doResponse(capitulo);
    	
    	return retorna;
	}
	
//	public String ajaxCallSearchFromSearchBar(String s){
//		
//		String retorna = "";
//		
//		Collection<CapituloDTO> capitulos = ((TutoPlayerService)SpringApplicationContext.getBean("tutoPlayerService")).findCapitulos(s);
//		
//		for(CapituloDTO capitulo:capitulos){
//			
//		}
//	
//		
//	}
//	
	public Collection<CapituloDTO> findCapitulos(String searchText){
		return ((TutoPlayerService)SpringApplicationContext.getBean("tutoPlayerService")).findCapitulos(searchText);
	}
	
	public String ajaxCallSetCapituloActualByNumero(String numero){
    	String retorna = "";
		
		CapituloDTO capitulo = this.getCapituloByNumber(numero);
		
		retorna = this.doResponse(capitulo);
    	
    	return retorna;
	}
	
	public String doResponse(CapituloDTO capitulo){
    	String retorna = "";

    	retorna += "<response>";
    	retorna += "<capID>"+capitulo.getCapituloID()+"</capID>";
    	retorna += "<capNumero>"+capitulo.getNumeroCapitulo()+"</capNumero>";
    	retorna += "<capNombre>"+capitulo.getNombre()+"</capNombre>";
    	retorna += "<capUrl>"+capitulo.getUrl()+"</capUrl>";
    	retorna += "<capDescripcion>"+capitulo.getDescripcion()+"</capDescripcion>";
    	retorna += "<capTags>";
    	Collection<TagDTO> tags = capitulo.getTags();
    	for(TagDTO tag:tags)
    		retorna+="<tag>"+tag.getDescripcion()+"</tag>";
    	retorna+="</capTags>";
    	retorna += "</response>";
    	
    	return retorna;
	}
	
	public String ajaxSubmitNewChapter(String numeroCapitulo,String nombre,String descripcion,String url,String tags){
		String retorna ="";
		
		CapituloDTO capituloNuevo = new CapituloDTO();
		capituloNuevo.setNumeroCapitulo(Integer.parseInt(numeroCapitulo));
		capituloNuevo.setNombre(nombre.replaceAll(";", ","));
		capituloNuevo.setDescripcion(descripcion.replaceAll(";", ","));
		capituloNuevo.setUrl(url);
		
		String tagsVector[] = tags.split(";");
		List<TagDTO> tagsObjects = new ArrayList<TagDTO>();
		for(int i=0;i<tagsVector.length;i++){
			
			TagDTO tag = ((TagService)SpringApplicationContext.getBean("tagService")).findByDescripcion(tagsVector[i]);
			if(tag == null){
				tag = new TagDTO();
				tag.setDescripcion(tagsVector[i]);
			}
			tagsObjects.add(tag);
		}
		
		capituloNuevo.setTags(tagsObjects);
		
		((TutoPlayerService)SpringApplicationContext.getBean("tutoPlayerService")).saveNewCapitulo(capituloNuevo);
		
		return retorna;
	}

	
	public String getHTMLCapitulos(){
		String retorna = "";
		List<CapituloDTO> capitulos = new ArrayList<CapituloDTO>(((TutoPlayerService)SpringApplicationContext.getBean("tutoPlayerService")).findAllCapitulos());
		for(int i=0;i<capitulos.size();i++)
			retorna += "<a href=\"tutoPlayer?t="+capitulos.get(i).getNumeroCapitulo()+"\"><div class=\"capBarItem\" id=\"capBarItem"+capitulos.get(i).getCapituloID()+"\">"+capitulos.get(i).getNombre()+"</div></a>\n"; 
		if(retorna=="")
			return "<div>Generico</div>";
		return retorna;
	}
	
}
